Nhiệm vụ của bạn là triển khai một Cây tìm kiếm nhị phân hỗ trợ bốn thao tác chính.
- Số lượng thao tác là $N$, với điều kiện $1 \le N \le 2 \cdot 10^5$.
- ins k: Chèn một khóa nguyên $k$ vào cây. Nếu $k$ đã tồn tại, thao tác này sẽ không thực hiện gì.
- find k: Tìm kiếm khóa $k$. In ra 'true' nếu nó tồn tại, ngược lại in ra 'false'.
- succ k: Tìm phần tử kế tiếp của $k$—khóa nhỏ nhất trong cây lớn hơn $k$ một cách nghiêm ngặt. In ra 'null' nếu không tồn tại.
- pred k: Tìm phần tử tiền nhiệm của $k$—khóa lớn nhất trong cây nhỏ hơn $k$ một cách nghiêm ngặt. In ra 'null' nếu không tồn tại.
- Giả định quan trọng: Đối với các truy vấn phần tử kế tiếp và tiền nhiệm, khóa $k$ được đảm bảo tồn tại trong cây.